<?php
require_once('Arquitectura/AbstractFas.php');
require_once('Arquitectura/Valida.php');
/*******************************************************
/* Autor : Efrain Gutierrez / Miguel Ortiz
/* Fecha : 10/04/2013
/* Lenguaje: PHP version: 5.4.7
/* Descripción: Clase encargada de las funciones de los profesores SEM
/********************************************************/

class Profesor extends Clases\AbstractFas
{
    /*Atributos Globales*/
    private $correo,$nombre,$tipo;
    
    /********************************************************
    /* _construct()
    /* Proposito: inicializar el objeto.
    /* Parametros : ninguno
    /* Limitaciones: ninguna.
    /* Retorna: ninguna
    /*********************************************************/    
    public function __construct()
    {
        parent::AbstractFas();
    }
    
    /********************************************************
    /* llenarProfesor(string correo, string nombre, int tipo)
    /* Proposito: inicializar el objeto con ciertos valores.
    /* Parametros : correo,nombre y tipo
    /* Limitaciones: ninguna.
    /* Retorna: ninguna
    /*********************************************************/    
    public function llenarProfesor($correo,$nombre,$tipo)
    {
        $this->correo = $correo;
        $this->nombre = $nombre;
        $this->tipo = $tipo;
        $this->insertar();
    }
    
    /********************************************************
    /* getCorreo()
    /* Proposito: regresar atributo correo.
    /* Parametros : ninguno
    /* Limitaciones: debe de ser diferente de null.
    /* Retorna: el valor de correo
    /*********************************************************/    
    public function getCorreo()
    {
        if($this->correo != null)
            return $this->correo; 
    }
    
    /********************************************************
    /* getNombre()
    /* Proposito: regresar atributo nombre.
    /* Parametros : ninguno
    /* Limitaciones: debe de ser diferente de null.
    /* Retorna: el valor de nombre.
    /*********************************************************/
    public function getNombre()
    {
        if($this->nombre!= null)
            return $this->nombre; 
    }
    
    /********************************************************
    /* getTipo()
    /* Proposito: regresar atributo nombre.
    /* Parametros : ninguno
    /* Limitaciones: debe de ser diferente de null.
    /* Retorna: el valor de tipo
    /* números.
    /*********************************************************/
    public function getTipo()
    {
        if($this->tipo!= null)
            return $this->tipo; 
    }
   
    /********************************************************
    /* setCorreo(string correo)
    /* Proposito: cambiar el valor del atributo correo.
    /* Parametros : correo
    /* Limitaciones: el nuevo valor debe de ser diferente de null.
    /* Retorna: nada
    /*********************************************************/    
    public function setCorreo($correo)
    {
        if($correo != null)
            $this->correo = $correo; 
    }
    
    /********************************************************
    /* setNombre(string nombre)
    /* Proposito: cambiar el valor del atributo nombre.
    /* Parametros : nombre
    /* Limitaciones: el nuevo valor debe de ser diferente de null.
    /* Retorna: nada
    /*********************************************************/
    public function setNombre($nombre)
    {
        if($nombre!= null)
            $this->nombre = $nombre; 
    }
    
    /********************************************************
    /* setTipo(int tipo)
    /* Proposito: cambiar el valor del atributo tipo.
    /* Parametros : tipo
    /* Limitaciones: el nuevo valor debe de ser diferente de null.
    /* Retorna: nada
    /*********************************************************/
    public function setTipo($tipo)
    {
        if($tipo!= null)
            $this->tipo = $tipo; 
    }
    
    /********************************************************
    /* validaProfesor(string password)
    /* Proposito: validar la existencia de un profesor en la base de datos.
    /* Parametros : password del profesor que NO es almacenada, solo se usa como parametro a validar en servidor de ITESM Mty
    /* Limitaciones: profesor inicializado.
    /* Retorna: Verdadero o Falso
    /*********************************************************/
    public function validaProfesor($password)
    {
        return \Clases\Valida::validar($this->correo, $password);
    }

    /********************************************************
    /* comandos()
    /* Proposito: validar la existencia de un profesor en la base de datos.
    /* Parametros : ninguno
    /* Limitaciones: profesor inicializado.
    /* Retorna: Verdadero o Falso
    /*********************************************************/
   
    protected function comandos() {
        $this->id = "correo";
        $this->tabla = "`Profesor`";
        $this->strDelete = "DeleteProfesor";
        $this->strInsertar = "InsertarProfesor";
        $this->strUpdate = "UpdateProfesor";
    }
    
    /********************************************************
    /* fillFas(mysql_row row)
    /* Proposito: inicializar un profesor con la info de la base de datos.
    /* Parametros : row de consulta
    /* Limitaciones: row completo mysql
    /* Retorna: Ninguna
    /*********************************************************/
    protected function fillFas($row) {
        $row = mysql_fetch_row($row);
        $x = -1;
        $this->correo = $row[++$x];
        $this->nombre = $row[++$x];
        $this->tipo = $row[++$x];
    }

    /********************************************************
    /* get(int id)
    /* Proposito: inicializar un profesor a partir de un id desde una base de datos.
    /* Parametros : id del profesor
    /* Limitaciones: Ninguna
    /* Retorna: Profesor
    /*********************************************************/
    public function get($id) {
        $abs = $this->getAbstractFas(new Profesor(),$id,$this->tabla,$this->id);
        return $abs;
    }
    
    /********************************************************
    /* getAll
    /* Proposito: inicializar lista de profesores existentes desde una base de datos.
    /* Parametros : Ninguna
    /* Limitaciones: Ninguna
    /* Retorna: Lista de Profesores
    /*********************************************************/
   
    public function getAll() {
        $abs = $this->getAllAbstract($this->tabla,$this->id,new Profesor());
        return $abs;
    }
    
    /********************************************************
    /* getAtributos()
    /* Proposito: regresar arreglo de atributos locales
    /* Parametros : Ninguna
    /* Limitaciones: Ninguna
    /* Retorna: Arreglo
    /*********************************************************/
   
    public function getAtributos() {
        $lst = array();
        array_push($lst,$this->correo);
        array_push($lst,$this->nombre);
        array_push($lst,$this->tipo);
        return $lst;
    }
} // fin de la clase Profesor

?>
